#pragma once

#include "texture2d.h"

namespace GLC {

class TextureGroup
{
public:
    TextureGroup();
    virtual ~TextureGroup();

    size_t load(const std::string &name);

    size_t size() const;
    Texture2DRef reference(size_t index) const;
    const Texture2D &texture(size_t index) const;

    /**
     * @brief getByName - get reference to texture by it's name
     * @param name
     * @return null reference if texture with given name doesn't exist
     */
    Texture2DRef getByName(const std::string &name) const;

private:
    TextureGroup(const TextureGroup &group);
    std::vector<Texture2D*> m_textures;
};

} // namespace GLC
